/**
 * 
 */
package com.bbva.gptf.back.transformador;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.convert.converter.Converter;

import com.bbva.gptf.back.dominio.Tgpt031OrdenDeuda;
import com.bbva.gptf.back.dominio.Tgpt032DetOrdDeu;
import com.bbva.gptf.dto.bean.DetalleOrden;
import com.bbva.gptf.dto.bean.Orden;

/**
 * @author mtellezg
 * 
 */
public class TransformadorOrden implements Converter<Tgpt031OrdenDeuda, Orden> {

	@Autowired
	private TransformadorDetalleOrden transformadorDetalleOrden;
	Orden orden;

	@Autowired
	private TransformadorGestor transformadorGestor;

	@Override
	public Orden convert(final Tgpt031OrdenDeuda source) {
		// TODO Auto-generated method stub
		orden = new Orden();
		orden.setCdOrden(source.getCdOrdenDeuda());
		orden.setCdGestor(source.getCdGestor().getCdUsuario());
		orden.setCdValorBmv(source.getCdValorBmv());
		orden.setCdEmisora(source.getCdEmisora());
		orden.setCdSerie(source.getCdSerie());
		orden.setFhOperacion(source.getFhOperacion());
		orden.setTpOperacion(source.getTpOperacion());
		orden.setCtTitulo(source.getCtTitulo());
		orden.setImPrecio(source.getImPrecio());
		orden.setToImporte(source.getToImporte());
		orden.setPcTasa(source.getPcTasa());
		orden.setCtTituloPost(source.getCtTituloPost());
		orden.setImPrecioPost(source.getImPrecioPost());
		orden.setToImportePost(source.getToImportePost());
		orden.setPcTasaPost(source.getPcTasaPost());
		orden.setTxJustificacion(source.getTxJustificacion());
		orden.setStValidPolitica(source.getStValidPolitica());
		orden.setStOrden(source.getStOrden());
		orden.setTmUmo(source.getTmUmo());
		orden.setFhUmo(source.getFhUmo());
		orden.setCdUsuarioUmo(source.getCdUsuarioUmo());
		orden.setStNominal(source.getStNominal());
		orden.setImValorNom(source.getImValorNom());
		if (source.getCdGestor() != null) {
			orden.setGestor(transformadorGestor.convert(source.getCdGestor()));
		}
		List<DetalleOrden> listaDetalle = new ArrayList<DetalleOrden>();
		List<Tgpt032DetOrdDeu> it = Tgpt032DetOrdDeu.obtenerDetallesOrdenDeuda(source.getCdOrdenDeuda());
		for(Tgpt032DetOrdDeu ord : it) {
			DetalleOrden detalleOrden = transformadorDetalleOrden.convert(ord);
			listaDetalle.add(detalleOrden);
		}
		orden.setDetallesOrden(listaDetalle);
		return orden;
	}

	/**
	 * @param transformadorDetalleOrden
	 *            the transformadorDetalleOrden to set
	 */
	public void setTransformadorDetalleOrden(
			final TransformadorDetalleOrden transformadorDetalleOrden) {
		this.transformadorDetalleOrden = transformadorDetalleOrden;
	}

	public void setTransformadorGestor(TransformadorGestor transformadorGestor) {
		this.transformadorGestor = transformadorGestor;
	}
}
